package com.wicket.okrbff.biz.service.impl;

import cn.hutool.core.bean.BeanUtil;
import com.wicket.okrbff.biz.service.FunctionalGoalService;
import com.wicket.okrbff.biz.service.dto.common.BffOrgDutyTargetDetailDto;
import com.wicket.okrbff.biz.service.dto.req.BffAddTargetDetailsReqDto;
import com.wicket.okrbff.biz.service.dto.req.BffQueryTargetDetailMgtListReqDto;
import com.wicket.okrbff.biz.service.dto.req.BffQueryTargetDetailsListReqDto;
import com.wicket.okrbff.biz.service.dto.req.BffUpdateTargetDetailReqDto;
import com.wicket.okrbff.biz.service.dto.res.BffAddTargetDetailsRespDto;
import com.wicket.okrbff.biz.service.dto.res.BffQueryTargetDetailMgtListRespDto;
import com.wicket.okrbff.biz.service.dto.res.BffQueryTargetDetailsListRespDto;
import com.wicket.okrbff.biz.service.dto.res.BffUpdateTargetDetailRespDto;
import com.wicket.okrbff.common.util.RedisUtil;
import com.wicket.okrframework.integration.FwBaseFunctionalGoalClient;
import com.wicket.okrframework.integration.dto.*;
import org.apache.skywalking.apm.toolkit.trace.Tag;
import org.apache.skywalking.apm.toolkit.trace.Tags;
import org.apache.skywalking.apm.toolkit.trace.Trace;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.stream.Collectors;
import com.wicket.okrbff.common.exception.Assert;


/**
 * @author ：
 * @date ：
 *
 *
 * @version 1.0
 */
@Service
public class FunctionalGoalServiceImpl implements FunctionalGoalService {
    @Resource
    FwBaseFunctionalGoalClient fwBaseFunctionalGoalClient;
    @Resource
    private RedisUtil redisUtil;

    /**
   * B1-3新增目标职责明细（管理）[809]
   * gen by moon at 8/10/2022, 3:30:55 AM
   */
    @Trace(operationName = "B1-3新增目标职责明细（管理）")
    @Tags({@Tag(key = "参数",value = "arg[0]"),
            @Tag(key = "返回值",value = "returnedObj")})
  @Override
  public BffAddTargetDetailsRespDto addTargetDetails(BffAddTargetDetailsReqDto reqDto){
      
       
       AddTargetDetailsRespDto addTargetDetailsRespDto_1 = null;
//步骤0: D1-3新增目标职责明细 - addTargetDetails
     AddTargetDetailsRespDto addTargetDetailsRespDto = null;
    AddTargetDetailsReqDto addTargetDetailsReqDto=new AddTargetDetailsReqDto();
  if(reqDto!=null){
      addTargetDetailsReqDto.setDetailType(reqDto.getDetailType());//sourceId:38557_1
addTargetDetailsReqDto.setContent(reqDto.getContent());//sourceId:38558_1
addTargetDetailsReqDto.setOrderNumber(reqDto.getOrderNumber());//sourceId:38559_1
addTargetDetailsReqDto.setTypeCode(reqDto.getTypeCode());//sourceId:38560_1
addTargetDetailsReqDto.setEntityId(reqDto.getEntityId());//sourceId:38561_1
addTargetDetailsReqDto.setSubjectLifeCycle(reqDto.getSubjectLifeCycle());//sourceId:49463_1
addTargetDetailsReqDto.setOrganizationId(reqDto.getOrganizationId());//sourceId:49566_1
    }
  
    /*D1-3新增目标职责明细[810]   */
    Assert.isNull(addTargetDetailsReqDto.getDetailType(),"B1-3新增目标职责明细（管理）-D1-3新增目标职责明细-类型编码不能为空",false);
Assert.isNull(addTargetDetailsReqDto.getContent(),"B1-3新增目标职责明细（管理）-D1-3新增目标职责明细-明细内容不能为空",false);
Assert.isNull(addTargetDetailsReqDto.getOrderNumber(),"B1-3新增目标职责明细（管理）-D1-3新增目标职责明细-排序不能为空",false);
Assert.isNull(addTargetDetailsReqDto.getTypeCode(),"B1-3新增目标职责明细（管理）-D1-3新增目标职责明细-所属对象实例类型不能为空",false);
Assert.isNull(addTargetDetailsReqDto.getEntityId(),"B1-3新增目标职责明细（管理）-D1-3新增目标职责明细-所属对象实例ID不能为空",false);
Assert.isNull(addTargetDetailsReqDto.getSubjectLifeCycle(),"B1-3新增目标职责明细（管理）-D1-3新增目标职责明细-主体生命周期不能为空",false);
      addTargetDetailsRespDto = fwBaseFunctionalGoalClient.addTargetDetails(addTargetDetailsReqDto).getData();
      
      addTargetDetailsRespDto_1 = addTargetDetailsRespDto;
    
BffAddTargetDetailsRespDto retData = new BffAddTargetDetailsRespDto();
  if(addTargetDetailsRespDto_1!=null){
      retData.setDutyTargetDetailId(addTargetDetailsRespDto_1.getDutyTargetDetailId());//sourceId:38565_1
    }
  

  
  
return retData;
  }

    /**
   * B1-3查询目标职责明细列表[948]
   * gen by moon at 8/18/2022, 10:21:54 PM
   */
    @Trace(operationName = "B1-3查询目标职责明细列表")
    @Tags({@Tag(key = "参数",value = "arg[0]"),
            @Tag(key = "返回值",value = "returnedObj")})
  @Override
  public BffQueryTargetDetailsListRespDto queryTargetDetailsList(BffQueryTargetDetailsListReqDto reqDto){
      
       
       QueryTargetDetailsListRespDto queryTargetDetailsListRespDto_1 = null;
//步骤0: D1-3 查询目标职责明细列表 - queryTargetDetailsList
     QueryTargetDetailsListRespDto queryTargetDetailsListRespDto = null;
    QueryTargetDetailsListReqDto queryTargetDetailsListReqDto=new QueryTargetDetailsListReqDto();
  queryTargetDetailsListReqDto.setSubjectLifeCycle("CURRENTLY_VALID");//sourceId:35881_1
if(reqDto!=null){
      queryTargetDetailsListReqDto.setDetailType(reqDto.getDetailType());//sourceId:35871_1
queryTargetDetailsListReqDto.setTypeCode(reqDto.getTypeCode());//sourceId:35872_1
queryTargetDetailsListReqDto.setEntityId(reqDto.getEntityId());//sourceId:35873_1
    }
  
    /*D1-3 查询目标职责明细列表[813]   */
    Assert.isNull(queryTargetDetailsListReqDto.getTypeCode(),"B1-3查询目标职责明细列表-D1-3 查询目标职责明细列表-所属对象实例类型不能为空",false);
Assert.isNull(queryTargetDetailsListReqDto.getEntityId(),"B1-3查询目标职责明细列表-D1-3 查询目标职责明细列表-所属对象实例ID不能为空",false);
Assert.isNull(queryTargetDetailsListReqDto.getSubjectLifeCycle(),"B1-3查询目标职责明细列表-D1-3 查询目标职责明细列表-主体生命周期不能为空",false);
      queryTargetDetailsListRespDto = fwBaseFunctionalGoalClient.queryTargetDetailsList(queryTargetDetailsListReqDto).getData();
      
      queryTargetDetailsListRespDto_1 = queryTargetDetailsListRespDto;
    
BffQueryTargetDetailsListRespDto retData = new BffQueryTargetDetailsListRespDto();
  if(queryTargetDetailsListRespDto_1!=null){
      retData.setOrgDutyTargetDetailList(queryTargetDetailsListRespDto_1.getOrgDutyTargetDetailList().stream().map(item -> BeanUtil.toBean(item, BffOrgDutyTargetDetailDto.class)).collect(Collectors.toList()));//sourceId:35899_1
    }
  

  
  
return retData;
  }

    /**
   * B1-3修改目标职责明细（管理）[816]
   * gen by moon at 8/10/2022, 3:30:56 AM
   */
    @Trace(operationName = "B1-3修改目标职责明细（管理）")
    @Tags({@Tag(key = "参数",value = "arg[0]"),
            @Tag(key = "返回值",value = "returnedObj")})
  @Override
  public BffUpdateTargetDetailRespDto updateTargetDetail(BffUpdateTargetDetailReqDto reqDto){
      
       
       //步骤0: D1-3修改目标职责明细 - updateTargetDetail
     UpdateTargetDetailRespDto updateTargetDetailRespDto = null;
    UpdateTargetDetailReqDto updateTargetDetailReqDto=new UpdateTargetDetailReqDto();
  if(reqDto!=null){
      updateTargetDetailReqDto.setDutyTargetDetailId(reqDto.getDutyTargetDetailId());//sourceId:38709_1
updateTargetDetailReqDto.setContent(reqDto.getContent());//sourceId:38710_1
updateTargetDetailReqDto.setOrderNumber(reqDto.getOrderNumber());//sourceId:38711_1
updateTargetDetailReqDto.setSubjectLifeCycle(reqDto.getSubjectLifeCycle());//sourceId:49521_1
    }
  
    /*D1-3修改目标职责明细[811]   */
    Assert.isNull(updateTargetDetailReqDto.getDutyTargetDetailId(),"B1-3修改目标职责明细（管理）-D1-3修改目标职责明细-目标职责明细ID不能为空",false);
Assert.isNull(updateTargetDetailReqDto.getSubjectLifeCycle(),"B1-3修改目标职责明细（管理）-D1-3修改目标职责明细-主体生命周期不能为空",false);
      updateTargetDetailRespDto = fwBaseFunctionalGoalClient.updateTargetDetail(updateTargetDetailReqDto).getData();
      
      
    
BffUpdateTargetDetailRespDto retData = new BffUpdateTargetDetailRespDto();
  
  

  
  
return retData;
  }

    /**
   * B1-3查询管理模式目标职责明细列表(管理)[818]
   * gen by moon at 8/10/2022, 3:31:01 AM
   */
    @Trace(operationName = "B1-3查询管理模式目标职责明细列表(管理)")
    @Tags({@Tag(key = "参数",value = "arg[0]"),
            @Tag(key = "返回值",value = "returnedObj")})
  @Override
  public BffQueryTargetDetailMgtListRespDto queryTargetDetailMgtList(BffQueryTargetDetailMgtListReqDto reqDto){
      
       
       QueryTargetDetailsListRespDto queryTargetDetailsListRespDto_1 = null;
//步骤0: D1-3 查询目标职责明细列表 - queryTargetDetailsList
     QueryTargetDetailsListRespDto queryTargetDetailsListRespDto = null;
    QueryTargetDetailsListReqDto queryTargetDetailsListReqDto=new QueryTargetDetailsListReqDto();
  if(reqDto!=null){
      queryTargetDetailsListReqDto.setDetailType(reqDto.getDetailType());//sourceId:35908_1
queryTargetDetailsListReqDto.setTypeCode(reqDto.getTypeCode());//sourceId:35909_1
queryTargetDetailsListReqDto.setEntityId(reqDto.getEntityId());//sourceId:35910_1
queryTargetDetailsListReqDto.setIsArchive(reqDto.getIsArchive());//sourceId:39283_1
    }
  
    /*D1-3 查询目标职责明细列表[813]   */
    Assert.isNull(queryTargetDetailsListReqDto.getTypeCode(),"B1-3查询管理模式目标职责明细列表(管理)-D1-3 查询目标职责明细列表-所属对象实例类型不能为空",false);
Assert.isNull(queryTargetDetailsListReqDto.getEntityId(),"B1-3查询管理模式目标职责明细列表(管理)-D1-3 查询目标职责明细列表-所属对象实例ID不能为空",false);
Assert.isNull(queryTargetDetailsListReqDto.getIsArchive(),"B1-3查询管理模式目标职责明细列表(管理)-D1-3 查询目标职责明细列表-是否存档不能为空",false);
      queryTargetDetailsListRespDto = fwBaseFunctionalGoalClient.queryTargetDetailsList(queryTargetDetailsListReqDto).getData();
      
      queryTargetDetailsListRespDto_1 = queryTargetDetailsListRespDto;
    
BffQueryTargetDetailMgtListRespDto retData = new BffQueryTargetDetailMgtListRespDto();
  if(queryTargetDetailsListRespDto_1!=null){
      retData.setOrgDutyTargetDetailList(queryTargetDetailsListRespDto_1.getOrgDutyTargetDetailList().stream().map(item -> BeanUtil.toBean(item, BffOrgDutyTargetDetailDto.class)).collect(Collectors.toList()));//sourceId:35950_1
    }
  

  retData.setPageNum(queryTargetDetailsListRespDto.getPageNum());
        retData.setPageSize(queryTargetDetailsListRespDto.getPageSize());
        retData.setTotal(queryTargetDetailsListRespDto.getTotalNum());
        retData.setIsLastPage((Math.ceil(Double.valueOf(queryTargetDetailsListRespDto.getTotalNum()) / Double.valueOf(queryTargetDetailsListRespDto.getPageSize()))) <= retData.getPageNum());
        
  
return retData;
  }
    //
}
